Software developers have begun considering the implementation of large distributed object systems. In such systems, distributed objects may be stored in various types of databases such as relational databases or hierarchical databases. In addition, these particular database types may be implemented using different types of software packages such as Oracle, Sybase, etc. Interaction with multiple database types presents several problems. First, the interaction with a particular type of database may be using a non-standard interface that is very specific to that database. Even if a standard interface is used, a particular type of database may not support the same functions as are supported by other types of databases. Varying interfaces present a challenge to the developers of distributed objectoriented systems because varying interfaces could require the handling of special cases in the code if the system is not implemented properly. Because large distributed object systems may include a number of different types of legacy database systems, these problems may be magnified in a distributed object environment.
Second, database software sellers normally price their software based upon the number of connections that may be simultaneously made to a database at any one time. These database licenses are frequently expensive. Thus, a certain number of database licenses will ordinarily be purchased to share among multiple applications. Database licenses should desirably be shared in as efficient a manner as possible so as to avoid having to purchase an excess number of database licenses. In a distributed object system, sharing of databases presents further problems in maintaining data consistency while handling transactions which may make multiple changes to a database. In addition, sharing database connections means that database connections must be established and then torn down so that the connection may be used by different processes. Because database connection and disconnection consumes significant computing resources, managing this process to improve efficiency is important.